Cytosim  PI
Cytoskeleton Simulator
Mecable Class Referenceabstract

Detailed Description

A Mecable is an Object made of points that can can be simulated in Meca.

Mecable defines an interface that is implemented in Bead and PointSet. Mecable is also a Buddy, and can thus be part of an Organizer.

Inheritance diagram for Mecable:
Object Buddy Node Inventoried Movable Bead PointSet FiberNaked Solid Sphere RigidFiber Fiber ClassicFiber DynamicFiber TreadmillingFiber Tubule

Public Member Functions

 Mecable ()
 The constructor resets the pointers.
 
virtual ~Mecable ()
 Destructor de-allocates memory.
 
virtual unsigned nbPoints () const =0
 Number of points.
 
virtual Vector posP (unsigned int P) const =0
 return position of point P
 
virtual void putPoints (real[]) const =0
 copy current coordinates to provided array
 
virtual void getPoints (const real[])=0
 replace current coordinates of points by values from the provided array
 
virtual Vector netForceP (unsigned int p) const =0
 return Force on point p calculated at previous step by Brownian dynamics
 
virtual void getForces (const real[])=0
 replace current forces by the ones provided
 
void matIndex (Matrix::index_type index)
 Store the index where coordinates are located in Meca.
 
Matrix::index_type matIndex () const
 Index in mB of the first point. the index in the vectors is DIM*matIndex() More...
 
bool useBlock () const
 Tell Meca to use preconditionning on this object or not.
 
void useBlock (bool b)
 change preconditionning flag
 
realallocateBlock (unsigned)
 Allocate a block of the requested size.
 
realblock () const
 return allocated block
 
virtual void setDragCoefficient ()=0
 Calculate the mobility coefficient.
 
virtual real dragCoefficient () const =0
 The total drag coefficient of object ( force = drag * speed )
 
virtual void prepareMecable ()=0
 prepare the Mecable to solve the mechanics in Meca::solve() More...
 
virtual real addBrownianForces (real *rhs, real sc) const
 Add Brownian noise terms to a force vector (sc = kT / dt)
 
virtual void addRigidity (const real *X, real *Y) const
 Add rigidity terms Y <- Y + Rigidity * X. More...
 
virtual void addRigidityMatUp (Matrix &mB, int offset) const
 Add rigidity matrix elements (which should be symmetric) to provided matrix. More...
 
virtual void setSpeedsFromForces (const real *X, real *Y, real sc=1.0, bool rhs=false) const =0
 Calculate speeds from given forces. More...
 
virtual void makeProjectionDiff (const real *forces)
 set the terms obtained from the linearization of the Projection operator, from the given forces More...
 
virtual void addProjectionDiff (const real *X, real *Y) const
 add terms from projection correction terms: Y <- Y + P' * X; More...
 
virtual void setInteractions (Meca &) const
 add the interactions (for example due to confinements)
 
- Public Member Functions inherited from Object
 Object ()
 constructor
 
virtual Tag tag () const =0
 an ASCII character identifying the ObjectSet corresponding to this object
 
virtual const Propertyproperty () const =0
 Property associated with the Object.
 
virtual void write (OutputWrapper &) const =0
 write Object data to file
 
virtual void read (InputWrapper &, Simul &)=0
 read Object from file, within the Simul
 
std::string reference () const
 concatenation of [ tag(), property()->index(), number() ] in plain ascii More...
 
void writeReference (OutputWrapper &) const
 write a reference that identifies the Object uniquely More...
 
void writeReference (OutputWrapper &, Tag tag) const
 write a reference, but using the provided Tag More...
 
int mark () const
 birth mark value
 
void mark (int m)
 set birth mark
 
int fleck () const
 fleck value (not stored in trajectory files)
 
void fleck (int f) const
 set fleck (the value is not stored in trajectory files)
 
Objectnext () const
 extends Node::next(), with a cast to preserve type
 
Objectprev () const
 extends Node::prev(), with a cast to preserve type
 
- Public Member Functions inherited from Node
 Node ()
 constructor set as unlinked
 
virtual ~Node ()
 destructor More...
 
bool linked () const
 true if Node is linked
 
Nodenext () const
 the next Node in the list, or zero if this is last
 
Nodeprev () const
 the previous Node in the list, or zero if this is first
 
NodeListlist () const
 the list where the object is linked, or zero
 
ObjectSetobjset () const
 return associated ObjectSet
 
- Public Member Functions inherited from Inventoried
 Inventoried ()
 initialize (name=0)
 
 ~Inventoried ()
 destructor
 
void number (Number n)
 change the serial number
 
Number number () const
 serial number : a integer identifier, unique within each class
 
- Public Member Functions inherited from Movable
 Movable ()
 constructor
 
virtual ~Movable ()
 destructor
 
virtual Vector position () const
 return the position in space of the object
 
virtual void setPosition (Vector const &)
 move object to specified position More...
 
virtual bool translatable () const
 true if object accepts translations (default=false)
 
virtual void translate (Vector const &)
 move the object ( position += given vector ) More...
 
virtual bool rotatable () const
 true if object accepts rotations (default=false)
 
virtual void rotate (Rotation const &)
 rotate the object around the origin of coordinates More...
 
virtual void rotateP (Rotation const &)
 rotate the object around its current position More...
 
virtual void foldPosition (Modulo const *)
 perform modulo for periodic boundary conditions More...
 
- Public Member Functions inherited from Buddy
virtual ~Buddy ()
 upon destruction, goodbye is called for all buddies
 
void hello (Buddy *b)
 will make this and b mutual buddies
 
virtual void goodbye (Buddy *)
 this is called everytime a known buddy is destroyed
 
Buddybuddy (unsigned int ix) const
 return buddy at index ix
 
void buddy (Buddy *b, unsigned int ix)
 replace the buddy that may have been at index ix
 

Additional Inherited Members

- Static Public Member Functions inherited from Object
static std::string strReference (char, int, Number, int)
 build a string reference by concatenating (tag, property_index, number, mark) More...
 
static void readReference (InputWrapper &, int &, Number &, int &, char pretag)
 read a reference (property_index, number, mark) from input More...
 
static void writeNullReference (OutputWrapper &)
 write a reference that does not refer to any Object
 
- Static Public Member Functions inherited from Movable
static Vector readPrimitive (std::istream &, const Space *)
 read a position specified with primitives, such as 'circle 5', etc. More...
 
static Vector readPosition (std::istream &, const Space *)
 read a position in space More...
 
static Vector readDirection (std::istream &, const Vector &, const Space *)
 read an orientation, and return a normalized vector More...
 
static Rotation readRotation (std::istream &, const Vector &, const Space *)
 read a rotation specified in is, at position pos More...
 
- Static Public Attributes inherited from Object
static const Tag TAG = 'v'
 Object::TAG = 'v' represents the 'void' pointer.
 
- Protected Attributes inherited from Node
NodenNext
 the next Node in the list
 
NodenPrev
 the previous Node in the list
 
- Protected Attributes inherited from Inventoried
Number nNumber
 object identifier, unique within the class defined by tag()
 

Member Function Documentation

virtual void addProjectionDiff ( const real X,
real Y 
) const
inlinevirtual

This is enabled by a keyword PROJECTION_DIFF in meca.cc

Reimplemented in RigidFiber.

virtual void addRigidity ( const real X,
real Y 
) const
inlinevirtual

Rigidity can be any force acting internally to the objects for example, the bending rigidity of Fibers. This version is used to calculate the Matrix * Vector in Meca.

Reimplemented in RigidFiber.

virtual void addRigidityMatUp ( Matrix mB,
int  offset 
) const
inlinevirtual

The function should add terms to the upper part of matrix mB, at indices starting from offset. It should fill at maximum the upper part of the diagonal block corresponding to indices [offset - offset+DIM*nbPoints()]. This version is used to build the preconditionner in Meca. It should be consistent with addRigidity(): add the same terms.

Reimplemented in RigidFiber.

virtual void makeProjectionDiff ( const real forces)
inlinevirtual

This is enabled by a keyword PROJECTION_DIFF in meca.cc

Reimplemented in RigidFiber.

Matrix::index_type matIndex ( ) const
inline

X1 is stored at DIM*matIndex(), Y1 at DIM*matIndex()+1, Z1 at DIM*matIndex()+2 then X2, Y2, Z2...

virtual void prepareMecable ( )
pure virtual

This is called in Meca, before the system is solved, and it should prepare all the variables necessary for:

Implemented in Bead, Solid, Sphere, and Fiber.

virtual void setSpeedsFromForces ( const real X,
real Y,
real  sc = 1.0,
bool  rhs = false 
) const
pure virtual

The function should perform Y <- sc * mobility * X.

  • X and Y are vectors of size DIM*nbPoints().
  • sc is a provided scalar, and mobility is known by the object.
  • if rhs==true, the call was made with X containing the true force in the system.

Implemented in Sphere, Bead, RigidFiber, and Solid.